﻿using System;
using System.Collections.Generic;
using Konekcija.Core.Reporting.Dto.Application.Files;
using Konekcija.Core.Reporting.Dto.Application.Meta;
using base31.Core.Domain.Configuration;

namespace Konekcija.Core.Reporting.Dto.Application.Content
{
    
    public class Item
    {
        public virtual Guid Id { get; set; }
        public virtual Guid? RegionId { get; set; }
        public virtual Guid? DirectionId { get; set; }
        public virtual Guid? StatusId { get; set; }
        public virtual Guid? ConditionId { get; set; }
        public virtual Guid? PreviewImageId { get; set; }
        public virtual Guid? ItemPriceOptionId { get; set; }
        public virtual bool? HasPrice { get; set; }
        public virtual bool? HasAuction { get; set; }
        public virtual bool? IsSaved { get; set; }
        public virtual int? CountBidding { get; set; }
        public virtual int? CountPhotos { get; set; }
        public virtual int? CountVideos { get; set; }
        public virtual int? CountAudio { get; set; }
        public virtual int? CountFiles { get; set; }
        public virtual int? CountComments { get; set; }
        public virtual int? CountView { get; set; }
        public virtual int? Votes { get; set; }
        public virtual int? TotalRating { get; set; }
        public virtual bool? CommentsEnabled { get; set; }
        public virtual bool? OnlyForMembers { get; set; }
        public virtual string Url { get; set; }
        public virtual DateTime? DateCreated { get; set; }
        public virtual DateTime? DateChanged { get; set; }
        public virtual DateTime? DateStart { get; set; }
        public virtual DateTime? DateEnd { get; set; }
        public virtual Guid? ByUserId { get; set; }


        // content
        public virtual ICollection<Comment> Comments { get; set; }
        public virtual ICollection<ItemSaved> SavedBy { get; set; }
        public virtual ICollection<Auction> Auctions { get; set; }
        public virtual ICollection<ItemLanguage> ItemLanguages { get; set; }
        public virtual ICollection<ItemPriceVariant> ItemPriceVariants { get; set; }
        public virtual ItemPriceOption ItemPriceOption { get; set; }

        // files
        public virtual ICollection<Audio> Audios { get; set; }
        public virtual ICollection<Video> Videos { get; set; }
        public virtual ICollection<Picture> Pictures { get; set; }
        public virtual ICollection<Document> Documents { get; set; }

        // configuartions
        public virtual ICollection<Category> Categories { get; set; }
        public virtual ICollection<Navigation> Navigations { get; set; }
        public virtual Region Region { get; set; } 

        // meta
        public virtual ItemStatus Status { get; set; }
        public virtual ItemCondition Condition { get; set; }
        public virtual ItemDirection Direction { get; set; }
        public virtual ICollection<ItemLevel> Levels { get; set; }
        public virtual ICollection<ItemType> Types { get; set; } 


        public Item()
        {
            
        }
    }
}
